/*定义一个长度为3的数组，数组存储1~3名学生对象作为初始数据，学生对象的学号，姓名各不相同
* 学生的属性：学号，姓名，年龄
* 要求1：再次添加一个学生对象，并在添加的时候进行学号的唯一性判断
* 要求2：添加完毕后，遍历所有的学生信息
* 要求3.通过id删除学生信息
* 要求4：删除完毕后，遍历所有的学生信息
* 要求5：查询数组id为“heima002”的学生，如果存在则他的年龄+1岁*/
public class StudentTest {
    public static void main(String[] args) {
    //定义一个长度为三的数组，存储学生对象
        Student[] students = new Student[3];
        //创建学生对象
        Student s1 = new Student(1,"zhangsan",23);
        Student s2 = new Student(2,"lisi",24);
        Student s3 = new Student(3,"wanwu",25);
        //把基础的学生对象添加到数组当中
        students[0] = s1;
        students[1] = s2;

        //再次添加一个学生对象，并在添加的时候进行学号的唯一性判断
        Student s4 = new Student(4,"zhaoliu",26);
        //判断id是否唯一
        if(stuId(students,s4.getId())){
            //id唯一，添加到数组当中,判断数组是否满了
            if (getcount(students) != students.length ){
                //数组没有满，直接添加
                students[getcount(students)] = s4;
                getstudents(students);
            }//数组满了，需要扩容
            else{
                Student[] newstudents = getnewstudents(students);
                newstudents[getcount(students)] = s4;
                getstudents(newstudents);
            }
        }else{
            System.out.println("id重复");
        }
    }
    /*===============================================方法区===================================================*/
    //定义一个方法，判断id的唯一性,true表示id唯一，false表示id重复
    public static boolean stuId(Student[] students,int id){
        //遍历数组，获取每一个学生id
        for(int i = 0;i < students.length;i++){
            Student s = students[i];
            //判断id是否唯一
            if(s != null && s.getId() == id){
            return false;
            }
        }
        return true;
    }
    //定义一个方法，判断数组是否满了
    public static int getcount(Student[] students){
        //定义一个计数器
        int count = 0;
        //遍历数组，获取每一个学生对象
        for(int i = 0;i < students.length;i++){
            Student s = students[i];
            //判断学生对象是否为空
            if(s != null){
                count++;
            }
        }return count;
    }
    //定义一个方法，扩容数组
    public static Student[] getnewstudents(Student[] students){
        //定义一个新数组
        Student[] newstudents = new Student[students.length+1];
        for (int i = 0; i < students.length; i++) {
            newstudents[i] = students[i];
        }
        return newstudents;
    }
    //定义一个方法，遍历数组
    public static void getstudents(Student[] students){
        for(int i = 0;i < students.length;i++){
            Student s = students[i];
            //判断学生对象是否为空
            if(s!= null){
                System.out.println(s.getId()+","+s.getName()+","+s.getAge());
            }
        }
    }

}
